package com.grupobbva.seguridad.domain;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;


/**
 * The persistent class for the PERFIL_EMPRESA database table.
 * Clase creada por wbardalez 19-11-2013
 * 
 */
@Entity
@Table(name="PERFIL_EMPRESA")
public class PerfilEmpresa implements Serializable {
	
	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = 1L;

	/** The perfil empresa id. */
	@Id
	@Column(name="PERFIL_EMP_ID")
	private Long perfilEmpresaId;

    /** The ambito. */
    @ManyToOne
	@JoinColumn(name="AMBITO_ID")
	private TablaDetalle ambito;
    
    @Column(name="APLICACION_ID")
	private Long aplicacionId;

	/** The nombre. */
	@Column(name="NOMBRE")
	private String nombre;

    /** The estado. */
    @ManyToOne
	@JoinColumn(name="ESTADO_ID")
	private TablaDetalle estado;

    /** The fecha creacion. */
    @Temporal(TemporalType.TIMESTAMP)
	@Column(name="FECHA_CREACION")
	private Date fechaCreacion;

    /** The fecha modificacion. */
    @Temporal( TemporalType.TIMESTAMP)
	@Column(name="FECHA_MODIFICACION")
	private Date fechaModificacion;

	/** The usuario creacion. */
	@Column(name="USUARIO_CREACION")
	private String usuarioCreacion;

	/** The usuario modificacion. */
	@Column(name="USUARIO_MODIFICACION")
	private String usuarioModificacion;

	@ManyToOne
    @JoinColumn(name="APLICACION_ID", insertable=false, updatable=false)
	private Aplicacion aplicacion;

    /** The perfil id. */
    @Column(name="PERFIL_ID")
	private Long perfilId;
    
    @ManyToOne
    @JoinColumns ({
    	@JoinColumn(name="APLICACION_ID", insertable=false, updatable=false),
    	@JoinColumn(name="PERFIL_ID", insertable=false, updatable=false)
    })
	private Perfil perfil;
    
    /** The empresa id. */
    @Column(name="EMPRESA_ID")
	private String empresaId;
    
    
    /** The modo. */
    @ManyToOne
   	@JoinColumn(name="MODO_ID")
   	private TablaDetalle modo;
    
    /** The restriccion. */
    @ManyToOne
   	@JoinColumn(name="RESTRICCION_ID")
   	private TablaDetalle restriccion;
    
    /** The codigo id. */
    @Column(name="CODIGO_ID")
	private String codigoId;
    
    @Transient
    private String [] lstOficinas;
    
    @Transient
    private String [] lstUbicacion;

    /**
     * Instantiates a new perfil empresa.
     */
    public PerfilEmpresa() {
    	
    }
    
    /**
     * Instantiates a new perfil empresa.
     *
     * @param perfilEmpresaId the perfil empresa id
     */
    public PerfilEmpresa(Long perfilEmpresaId) {
    	this.perfilEmpresaId = perfilEmpresaId;
    }
	
	/**
	 * Gets the fecha creacion.
	 *
	 * @return the fecha creacion
	 */
	public Date getFechaCreacion() {
		return this.fechaCreacion;
	}

	/**
	 * Sets the fecha creacion.
	 *
	 * @param fechaCreacion the new fecha creacion
	 */
	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}

	/**
	 * Gets the fecha modificacion.
	 *
	 * @return the fecha modificacion
	 */
	public Date getFechaModificacion() {
		return this.fechaModificacion;
	}

	/**
	 * Sets the fecha modificacion.
	 *
	 * @param fechaModificacion the new fecha modificacion
	 */
	public void setFechaModificacion(Date fechaModificacion) {
		this.fechaModificacion = fechaModificacion;
	}

	/**
	 * Gets the usuario creacion.
	 *
	 * @return the usuario creacion
	 */
	public String getUsuarioCreacion() {
		return this.usuarioCreacion;
	}

	/**
	 * Sets the usuario creacion.
	 *
	 * @param usuarioCreacion the new usuario creacion
	 */
	public void setUsuarioCreacion(String usuarioCreacion) {
		this.usuarioCreacion = usuarioCreacion;
	}

	/**
	 * Gets the usuario modificacion.
	 *
	 * @return the usuario modificacion
	 */
	public String getUsuarioModificacion() {
		return this.usuarioModificacion;
	}

	/**
	 * Sets the usuario modificacion.
	 *
	 * @param usuarioModificacion the new usuario modificacion
	 */
	public void setUsuarioModificacion(String usuarioModificacion) {
		this.usuarioModificacion = usuarioModificacion;
	}

	/**
	 * Gets the perfil empresa id.
	 *
	 * @return the perfil empresa id
	 */
	public Long getPerfilEmpresaId() {
		return perfilEmpresaId;
	}
	
	/**
	 * Sets the perfil empresa id.
	 *
	 * @param perfilEmpresaId the new perfil empresa id
	 */
	public void setPerfilEmpresaId(Long perfilEmpresaId) {
		this.perfilEmpresaId = perfilEmpresaId;
	}
	
	/**
	 * Gets the estado.
	 *
	 * @return the estado
	 */
	public TablaDetalle getEstado() {
		return estado;
	}

	/**
	 * Sets the estado.
	 *
	 * @param estado the new estado
	 */
	public void setEstado(TablaDetalle estado) {
		this.estado = estado;
	}

	

	/**
	 * @return the aplicacion
	 */
	public Aplicacion getAplicacion() {
		return aplicacion;
	}

	/**
	 * @param aplicacion the aplicacion to set
	 */
	public void setAplicacion(Aplicacion aplicacion) {
		this.aplicacion = aplicacion;
	}

	/**
	 * @return the perfil
	 */
	public Perfil getPerfil() {
		return perfil;
	}

	/**
	 * @param perfil the perfil to set
	 */
	public void setPerfil(Perfil perfil) {
		this.perfil = perfil;
	}

	/**
	 * Gets the perfil id.
	 *
	 * @return the perfil id
	 */
	public Long getPerfilId() {
		return perfilId;
	}

	/**
	 * Sets the perfil id.
	 *
	 * @param perfilId the new perfil id
	 */
	public void setPerfilId(Long perfilId) {
		this.perfilId = perfilId;
	}

	/**
	 * Gets the ambito.
	 *
	 * @return the ambito
	 */
	public TablaDetalle getAmbito() {
		return ambito;
	}

	/**
	 * Sets the ambito.
	 *
	 * @param ambito the new ambito
	 */
	public void setAmbito(TablaDetalle ambito) {
		this.ambito = ambito;
	}
	
	/**
	 * Sets the nombre.
	 *
	 * @param nombre the new nombre
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	/**
	 * Gets the nombre.
	 *
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}
	
	/**
	 * Gets the empresa id.
	 *
	 * @return the empresa id
	 */
	public String getEmpresaId() {
		return empresaId;
	}
	
	/**
	 * Sets the empresa id.
	 *
	 * @param empresaId the new empresa id
	 */
	public void setEmpresaId(String empresaId) {
		this.empresaId = empresaId;
	}
	
	/**
	 * Gets the modo.
	 *
	 * @return the modo
	 */
	public TablaDetalle getModo() {
		return modo;
	}
	
	/**
	 * Sets the modo.
	 *
	 * @param modo the new modo
	 */
	public void setModo(TablaDetalle modo) {
		this.modo = modo;
	}
	
	/**
	 * Gets the codigo id.
	 *
	 * @return the codigo id
	 */
	public String getCodigoId() {
		return codigoId;
	}
	
	/**
	 * Sets the codigo id.
	 *
	 * @param codigoId the new codigo id
	 */
	public void setCodigoId(String codigoId) {
		this.codigoId = codigoId;
	}
	
	/**
	 * Gets the restriccion.
	 *
	 * @return the restriccion
	 */
	public TablaDetalle getRestriccion() {
		return restriccion;
	}
	
	/**
	 * Sets the restriccion.
	 *
	 * @param restriccion the new restriccion
	 */
	public void setRestriccion(TablaDetalle restriccion) {
		this.restriccion = restriccion;
	}

	public String[] getLstOficinas() {
		return lstOficinas;
	}

	public void setLstOficinas(String[] lstOficinas) {
		this.lstOficinas = lstOficinas;
	}

	public String[] getLstUbicacion() {
		return lstUbicacion;
	}

	public void setLstUbicacion(String[] lstUbicacion) {
		this.lstUbicacion = lstUbicacion;
	}
	
	/**
	 * @return the aplicacionId
	 */
	public Long getAplicacionId() {
		return aplicacionId;
	}

	/**
	 * @param aplicacionId the aplicacionId to set
	 */
	public void setAplicacionId(Long aplicacionId) {
		this.aplicacionId = aplicacionId;
	}

	
}